package com.small.nine.wxmp.domain.bean.wx.template;

import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.small.nine.wxmp.common.JsonService;
import com.small.nine.wxmp.domain.bean.wx.WxErrorMsgBean;
import com.small.nine.wxmp.utils.wx.JsonUtils;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * templateId
 *
 * @author sheng_zs@126.com
 * @date 2021-08-13 17:39
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class WxTemplateIdBean extends WxErrorMsgBean implements JsonService {
    private static final long serialVersionUID = -1835585016148468624L;

    /**
     * 模板库中模板的编号，有“TM**”和“OPENTMTM**”等形式<br>
     * 用于获取 模板id
     */
    @JsonProperty("template_id_short")
    private String templateIdShort;

    /**
     * 返回的 模板id<br>
     * 公众帐号下模板消息ID，删除要用到
     */
    @JsonProperty("template_id")
    private String templateId;

    /**
     * 初始化
     *
     * @param templateIdShort 模板库中模板的编号，有“TM**”和“OPENTMTM**”等形式
     * @param templateId      模板 Id
     * @return {@link WxTemplateIdBean}
     */
    public static WxTemplateIdBean getInstance(String templateIdShort, String templateId) {
        if (!StrUtil.startWithAny(templateIdShort, "TM", "OPENTMTM") && StrUtil.isBlank(templateId)) {
            throw new IllegalArgumentException("创建 WxTemplateIdBean 参数有误");
        }
        WxTemplateIdBean bean = new WxTemplateIdBean();
        bean.setTemplateIdShort(templateIdShort);
        bean.setTemplateId(templateId);
        return bean;
    }

    @Override
    public String toJson() {
        return JsonUtils.writeValueAsString(this);
    }
}
